﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Xml;
using Windows.Security.Cryptography.Core;

namespace App_s2b_unilasalle.Common.negocio
{
    public class WebService
    {
        private int matricula;
        private string hashSenha;

        private List<Dictionary<string, object>> dadosDisciplina;
        private Dictionary<string, object> dadosRetorno;

        public WebService(int mat, int sen)
        {
            this.matricula = mat;
            this.setSenha(sen, "SHA1");
        }

        public void setSenha(int sen, string modoCripto)
        {
            /*
             * não funcionou...
             * 
            HashAlgorithmProvider hashCompute = HashAlgorithmProvider.OpenAlgorithm(modoCripto);
            var bytes = Encoding.UTF8.GetBytes(sen.ToString());
            IBuffer buffHash = hashCompute.HashData(bytes.AsBuffer());

            var array = buffHash.ToArray();
            var result = Convert.ToBase64String(array);
            */
            this.hashSenha = "d6e1bc99e8fa6df5120dd41532be1df16adafec7"; //unilasalle
        }

        public List<Dictionary<string, object>> getDadosDisciplina()
        {
            return dadosDisciplina;
        }

        public List<Dictionary<string, object>> buscaDadosWS()
        {
            dadosDisciplina = new List<Dictionary<string, object>>();
            dadosRetorno = new Dictionary<string, object>();


            // Create the XmlReader object. 
            XmlReader reader = XmlReader.Create("http://caronaonline.orgfree.com/ws3.php?user=" + this.matricula + "&pass=" + this.hashSenha);
            XmlReader readerDsc;
            string retorno;

            reader.ReadToFollowing("aluno");
            reader = reader.ReadSubtree();
            while (reader.ReadToFollowing("disciplina"))
            {
                readerDsc = reader.ReadSubtree();

                reader.ReadToFollowing("matricula");
                retorno = reader.ReadElementContentAsString("matricula", "");
                dadosRetorno["matricula"] = Convert.ToInt32(retorno);

                reader.ReadToFollowing("nome");
                retorno = reader.ReadElementContentAsString("nome", "");
                dadosRetorno["nome"] = retorno;

                reader.ReadToFollowing("cod_dsc");
                retorno = reader.ReadElementContentAsString("cod_dsc", "");
                dadosRetorno["cod_dsc"] = Convert.ToInt32(retorno);

                reader.ReadToFollowing("nome_dsc");
                retorno = reader.ReadElementContentAsString("nome_dsc", "");
                dadosRetorno["nome_dsc"] = retorno;

                reader.ReadToFollowing("professor");
                retorno = reader.ReadElementContentAsString("professor", "");
                dadosRetorno["professor"] = retorno;

                reader.ReadToFollowing("predio");
                retorno = reader.ReadElementContentAsString("predio", "");
                dadosRetorno["predio"] = Convert.ToInt32(retorno);

                reader.ReadToFollowing("sala");
                retorno = reader.ReadElementContentAsString("sala", "");
                dadosRetorno["sala"] = Convert.ToInt32(retorno);

                reader.ReadToFollowing("dia");
                retorno = reader.ReadElementContentAsString("dia", "");
                dadosRetorno["dia"] = Convert.ToInt32(retorno);

                reader.ReadToFollowing("turno");
                retorno = reader.ReadElementContentAsString("turno", "");
                dadosRetorno["turno"] = Convert.ToInt32(retorno);

                reader.ReadToFollowing("g1");
                retorno = reader.ReadElementContentAsString("g1", "");
                dadosRetorno["g1"] = Convert.ToDouble(retorno);

                reader.ReadToFollowing("g2");
                retorno = reader.ReadElementContentAsString("g2", "");
                dadosRetorno["g2"] = Convert.ToDouble(retorno);

                reader.ReadToFollowing("substituicao");
                retorno = reader.ReadElementContentAsString("substituicao", "");
                dadosRetorno["substituicao"] = Convert.ToDouble(retorno);

                reader.ReadToFollowing("frequencia");
                retorno = reader.ReadElementContentAsString("frequencia", "");
                dadosRetorno["frequencia"] = Convert.ToDouble(retorno);

                dadosDisciplina.Add(dadosRetorno);
            }
            return dadosDisciplina;
        }
    }
}